
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Object类常用的方法有哪些 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Object类常用的方法有哪些 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Java中`Object`类的`equals(Object obj)`方法的默认实现是什么？在自定义类中通常何时需要重写它？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`equals()`方法的默认实现是比较两个对象的内存地址是否相等，即判断它们是否是同一个对象。当需要在自定义类中基于对象的内容（例如，比较两个学生对象的学号）进行比较时，就需要重写该方法。</div>
          </div>
          <div class="card-source">来源: 1. equals(Object obj)</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">`hashCode()`方法的主要用途是什么？为什么它通常需要和`equals()`方法一同被重写？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`hashCode()`方法返回对象的哈希码值，主要用于提高在哈希表（如 HashMap, HashSet）中的查找速度。它需要与`equals()`一同被重写，以保证通过`equals()`方法判断为相等的两个对象，具有相同的哈希码。</div>
          </div>
          <div class="card-source">来源: 2. hashCode()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">如果不重写`toString()`方法，直接打印一个Java对象会输出什么内容？重写它的主要目的是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">默认情况下，`toString()`方法的实现会返回对象的类名和哈希码。重写此方法的主要目的是提供更有意义的对象信息，例如对象的具体内容，这在打印日志或进行调试时非常有用。</div>
          </div>
          <div class="card-source">来源: 3. toString()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">`Object.getClass()`方法的主要功能是什么，以及它在Java中哪个核心技术中被广泛使用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`getClass()`方法返回对象的运行时类（`Class`对象）。它主要用于Java的反射机制中，通过返回的`Class`对象可以获取类的详细信息，如字段、方法和构造函数。</div>
          </div>
          <div class="card-source">来源: 4. getClass()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">调用`Object`类的`clone()`方法进行对象复制时，默认执行的是什么类型的拷贝？要成功使用`clone()`，类必须满足什么条件？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`clone()`方法的默认实现是浅拷贝。要使用此方法，类必须实现`Cloneable`接口。此外，通常需要重写该方法以实现深拷贝来确保对象的内部状态得到正确复制。</div>
          </div>
          <div class="card-source">来源: 5. clone()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">`finalize()`方法的历史用途是什么？为什么在现代Java编程中不鼓励使用它，并推荐了哪些替代方案？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`finalize()`方法用于在对象被垃圾回收前调用以执行清理工作。由于它在Java 9及以后版本中已被弃用，不建议使用。现代Java开发推荐使用`try-with-resources`语句或显式关闭资源的方式作为替代方案。</div>
          </div>
          <div class="card-source">来源: 6. finalize()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在多线程编程中，`wait()`方法如何协调线程？调用`wait()`方法必须满足什么前提条件？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`wait()`方法用于线程间的协调与通信，它能使当前线程进入等待状态，直到被另一个线程通过`notify()`或`notifyAll()`唤醒。调用`wait()`方法必须在同步代码块（`synchronized`）中进行。</div>
          </div>
          <div class="card-source">来源: 7. wait()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">`notify()`和`notifyAll()`方法之间有什么关键区别？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">关键区别在于唤醒的线程数量。`notify()`方法会唤醒在此对象监视器上等待的单个线程（随机一个），而`notifyAll()`方法会唤醒在此对象监视器上等待的所有线程。</div>
          </div>
          <div class="card-source">来源: 8. notify() 和 9. notifyAll()</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">Java中的`Object`类在类层次结构中处于什么地位？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`Object`类是Java中所有类的根类，几乎所有的类都直接或间接继承自`Object`类。它提供了一系列所有类都可以继承和使用的通用方法。</div>
          </div>
          <div class="card-source">来源: 文档引言部分</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
